#ifndef __TOKEN_H_
#define __TOKEN_H_
#include<string>
#include"../parser/parserbase.h"

struct Token{
    int line;           // 行号
    ParserBase::Tokens_ tokenType;      // token类型——类型 常量 关键字
    std::string value;
    Token(int line,ParserBase::Tokens_ tokenType,const std::string& value):
        line(line),
        tokenType(tokenType),
        value(value)
    {}
};

class TokenSequence{
private:
    int index;
    vector<Token> tokenSequence;

public:
    int lex(ParserBase::STYPE_* value);          // 没有更多序列的时候，是返回0
    void resetIndex();
    void pushToken(int line,ParserBase::Tokens_ tokenType,const std::string& value);
    void show(ofstream& out);
};

extern TokenSequence tokens;
#endif